杜郎俊赏 - dujun.io

新增画廊模式

我的博客系统一直有个缺撼是没有画廊模式,所以我不写有大量图片的文章——横竖图宽度不一,并且页面过长,极不美观。我没有想到好的开发方案,搁置至今。但是为了写《2025 CMS 杭州车展小记》,我重新拾起这个历史包袱攻克之。

开发画廊的困难不在前端,而在后端如何组织数据。我研究过 WordPress 块编辑器的图库,以及插件实现的画廊。一来操作步骤繁琐,二来存入数据库的是 html 代码,都不如意。我的设计理念是人只需最简洁的操作,剩下全由程序完成。我只想基于 Markdown 本身实现,不想引入新的复杂操作。

我注意到 Markdown 解析图片有以下情况:

同一行排列,两个 <img> 由相应数量的空格分隔:

![][1]![][2]

  [1]: img1.jpg
  [2]: img2.jpg

<img src="img1.jpg"><img src="img2.jpg">

换行排列,两个 <img><br> 分隔:

![][1]
![][2]

  [1]: img1.jpg
  [2]: img2.jpg

<img src="img1.jpg"><br><img src="img2.jpg">

隔一行排列,两个 <img><p> 包裹:

![][1]

![][2]

  [1]: img1.jpg
  [2]: img2.jpg

<p><img src="img1.jpg"></p><p><img src="img2.jpg"></p>

如此就有了实现基础:

  • 将由任意空格相连的<img>呈现为一排等高相连的组图
  • 将由<br>相连的组图吸附到一起,形成画廊

上图所示画廊,只需要在编辑器中填写:

![][1]![][2]
![][3]![][4]![][5]
![][6]![][7]

  [1]: img1.jpg
  [2]: img2.jpg
  [3]: img3.jpg
  [4]: img4.jpg
  [5]: img5.jpg
  [6]: img6.jpg
  [7]: img7.jpg

这何尝不是“所见即所得”的图片排版呢?

以上功能只针对电脑端,手机端未做修改。一是因为手机端横竖图均按最大宽度填充,不存在宽度不一的问题。二是手机端已经牢固培养了瀑布流的用户习惯,长页面造成的困扰较小。

标签: 网站发布
日期:2025-06-09